/**
 * 
 */
package com.itboye.textileexpres.base;

import org.json.JSONObject;

import android.app.Application;
import android.content.Context;
import android.graphics.Bitmap.Config;

import com.android.volley.Request;
import com.android.volley.RequestQueue;
import com.android.volley.toolbox.Volley;
import com.itboye.textileexpres.R;
import com.itboye.textileexpres.util.CrashHandler;
import com.nostra13.universalimageloader.cache.disc.naming.Md5FileNameGenerator;
import com.nostra13.universalimageloader.core.DisplayImageOptions;
import com.nostra13.universalimageloader.core.ImageLoaderConfiguration;
import com.nostra13.universalimageloader.core.assist.QueueProcessingType;

/**
 * @author hebidu
 * 
 */
public class MainApplication extends Application {

	public static Context context;

	private static RequestQueue queue;
	private static MainApplication instance;

	private static MainApplication getInstance;

	// public LocationService locationService;
	// public Vibrator mVibrator;

	public static MainApplication getGetInstance() {
		if (instance == null) {
			instance = new MainApplication();
		}
		return getInstance;
	}

	JSONObject jsonObject;

	protected int type;

	protected String uid;

	protected String nickName;

	public static void setGetInstance(MainApplication getInstance) {
		MainApplication.getInstance = getInstance;
	}

	@Override
	public void onCreate() {
		super.onCreate();
		// CrashHandler.getInstance().init(getApplicationContext());
		getInstance = this;
		context = getApplicationContext();
		// Intent intent = new Intent(getApplicationContext(), ByService.class);
		// // intent.putExtra("msg", "asdsdas");
		// startService(intent);
		queue = Volley.newRequestQueue(context);

		/***
		 * 初始化定位sdk，建议在Application中创建
		 */
		// locationService = new LocationService(getApplicationContext());
		// mVibrator
		// =(Vibrator)getApplicationContext().getSystemService(Service.VIBRATOR_SERVICE);
		// SDKInitializer.initialize(getApplicationContext());
		// initUMengPush();
	}

	// private void initUMengPush() {
	//
	// PushAgent mPushAgent = PushAgent.getInstance(this);
	// mPushAgent.setDebugMode(true);
	// System.out.println("" + "zhixing1");
	// UmengMessageHandler messageHandler = new UmengMessageHandler() {
	// /**
	// * 参考集成文档的1.6.3 http://dev.umeng.com/push/android/integration#1_6_3
	// * */
	// @Override
	// public void dealWithCustomMessage(final Context context,
	// final UMessage msg) {
	// super.dealWithCustomMessage(context, msg);
	// System.out.println("dealWithCustomMessage is In ui thread? "
	// + (Looper.getMainLooper() == Looper.myLooper()));
	// new Handler().post(new Runnable() {
	//
	// @Override
	// public void run() {
	// System.out.println("" + "zhixing2");
	// // TODO Auto-generated method stub
	// // 对自定义消息的处理方式，点击或者忽略
	// boolean isClickOrDismissed = true;
	// if (isClickOrDismissed) {
	// System.out.println("msg+" + msg);
	// // 自定义消息的点击统计
	// UTrack.getInstance(getApplicationContext())
	// .trackMsgClick(msg);
	// } else {
	// System.out.println("" + "zhixing3");
	// // 自定义消息的忽略统计
	// UTrack.getInstance(getApplicationContext())
	// .trackMsgDismissed(msg);
	// }
	// Toast.makeText(context, msg.custom, Toast.LENGTH_LONG)
	// .show();
	// }
	// });
	// }
	//
	// @Override
	// public void dealWithNotificationMessage(Context arg0, UMessage arg1) {
	// // TODO Auto-generated method stub
	// super.dealWithNotificationMessage(arg0, arg1);
	// System.out.println("执行了sssssssss2122");
	// if (arg1.activity.equals("call_message")) {// 更新私信及私信列表界面
	// Intent intent = new Intent("privatemsg");
	// sendBroadcast(intent);
	// System.out.println(">>>这是推送消息" + arg1.getRaw() + ":"
	// + arg1.extra.get("type"));
	// }
	// }
	//
	// /**
	// * 参考集成文档的1.6.4 http://dev.umeng.com/push/android/integration#1_6_4
	// * */
	// @Override
	// public Notification getNotification(Context context, UMessage msg) {
	// System.out.println("执行了sssssssss" + msg.builder_id);
	// switch (msg.builder_id) {
	// case 1:
	// Toast.makeText(MainApplication.context, "zhixing4", 0)
	// .show();
	// System.out.println("执行了sssssssss");
	// NotificationCompat.Builder builder = new NotificationCompat.Builder(
	// context);
	// RemoteViews myNotificationView = new RemoteViews(
	// context.getPackageName(),
	// R.layout.notification_view);
	// myNotificationView.setTextViewText(R.id.notification_title,
	// msg.title);
	// myNotificationView.setTextViewText(R.id.notification_text,
	// msg.text);
	// myNotificationView.setImageViewBitmap(
	// R.id.notification_large_icon,
	// getLargeIcon(context, msg));
	// myNotificationView.setImageViewResource(
	// R.id.notification_small_icon,
	// getSmallIconId(context, msg));
	// builder.setContent(myNotificationView)
	// .setContentTitle(msg.title)
	// .setSmallIcon(getSmallIconId(context, msg))
	// .setContentText(msg.text).setTicker(msg.ticker)
	// .setAutoCancel(true);
	// Notification mNotification = builder.build();
	// // 由于Android
	// // v4包的bug，在2.3及以下系统，Builder创建出来的Notification，并没有设置RemoteView，故需要添加此代码
	// mNotification.contentView = myNotificationView;
	// return mNotification;
	// // case 2:
	// // NotificationCompat.Builder builder = new
	// // NotificationCompat.Builder(context);
	// // RemoteViews myNotificationView = new
	// // RemoteViews(context.getPackageName(),
	// // R.layout.notification_view);
	// // myNotificationView.setTextViewText(R.id.notification_title,
	// // msg.title);
	// // myNotificationView.setTextViewText(R.id.notification_text,
	// // msg.text);
	// // myNotificationView.setImageViewBitmap(R.id.notification_large_icon,
	// // getLargeIcon(context, msg));
	// // myNotificationView.setImageViewResource(R.id.notification_small_icon,
	// // getSmallIconId(context, msg));
	// // builder.setContent(myNotificationView)
	// // .setContentTitle(msg.title)
	// // .setSmallIcon(getSmallIconId(context, msg))
	// // .setContentText(msg.text)
	// // .setTicker(msg.ticker)
	// // .setAutoCancel(true);
	// // Notification mNotification = builder.build();
	// // //由于Android
	// // v4包的bug，在2.3及以下系统，Builder创建出来的Notification，并没有设置RemoteView，故需要添加此代码
	// // mNotification.contentView = myNotificationView;
	// // return mNotification;
	// // case 3:
	// //
	// default:
	// // 默认为0，若填写的builder_id并不存在，也使用默认。
	// return super.getNotification(context, msg);
	// }
	// }
	//
	// };
	// mPushAgent.setMessageHandler(messageHandler);
	//
	// /**
	// * // 创建一个NotificationManager的引用 NotificationManager notificationManager
	// * = (NotificationManager)
	// * this.getSystemService(android.content.Context.NOTIFICATION_SERVICE);
	// *
	// * // 定义Notification的各种属性 Notification notification =new
	// * Notification(R.drawable.icon, "测试", System.currentTimeMillis());
	// * //FLAG_AUTO_CANCEL 该通知能被状态栏的清除按钮给清除掉 //FLAG_NO_CLEAR
	// * 该通知不能被状态栏的清除按钮给清除掉 //FLAG_ONGOING_EVENT 通知放置在正在运行 //FLAG_INSISTENT
	// * 是否一直进行，比如音乐一直播放，知道用户响应 notification.flags |=
	// * Notification.FLAG_ONGOING_EVENT; // 将此通知放到通知栏的"Ongoing"即"正在运行"组中
	// * notification.flags |= Notification.FLAG_NO_CLEAR; //
	// * 表明在点击了通知栏中的"清除通知"后，此通知不清除，经常与FLAG_ONGOING_EVENT一起使用
	// * notification.flags |= Notification.FLAG_SHOW_LIGHTS; //DEFAULT_ALL
	// * 使用所有默认值，比如声音，震动，闪屏等等 //DEFAULT_LIGHTS 使用默认闪光提示 //DEFAULT_SOUNDS
	// * 使用默认提示声音 //DEFAULT_VIBRATE 使用默认手机震动，需加上<uses-permission
	// * android:name="android.permission.VIBRATE" />权限 notification.defaults
	// * = Notification.DEFAULT_LIGHTS; //叠加效果常量
	// * //notification.defaults=Notification
	// * .DEFAULT_LIGHTS|Notification.DEFAULT_SOUND; notification.ledARGB =
	// * Color.BLUE; notification.ledOnMS =5000; //闪光时间，毫秒
	// *
	// * // 设置通知的事件消息 CharSequence contentTitle ="标题"; // 通知栏标题 CharSequence
	// * contentText ="内容"; // 通知栏内容
	// *
	// * //如果需要跳转到指定的Activity，则需要设置PendingIntent
	// *
	// * Intent notificationIntent =new Intent(A.this, B.class); //
	// * 点击该通知后要跳转的Activity
	// *
	// * notificationIntent.putExtra("date","需要传递的参数");
	// *
	// * // FLAG_UPDATE_CURRENT
	// * 更新数据，如果有多个PendingIntent，且requestCode相同，则会替换为最新extra数据
	// * //如果需要通过不同的extra数据，进行处理，就需要requestCode不相同 int requestCode = new
	// * Random().nextInt(); PendingIntent contentItent =
	// * PendingIntent.getActivity(this, requestCode, notificationIntent,
	// * PendingIntent.FLAG_UPDATE_CURRENT);
	// *
	// *
	// *
	// * notification.setLatestEventInfo(this, contentTitle, contentText,
	// * contentItent);
	// *
	// * // 把Notification传递给NotificationManager notificationManager.notify(0,
	// * notification);
	// */
	//
	// /**
	// * 该Handler是在BroadcastReceiver中被调用，故
	// * 如果需启动Activity，需添加Intent.FLAG_ACTIVITY_NEW_TASK 参考集成文档的1.6.2
	// * http://dev.umeng.com/push/android/integration#1_6_2
	// * */
	//
	// UmengNotificationClickHandler notificationClickHandler = new
	// UmengNotificationClickHandler() {
	// @Override
	// public void dealWithCustomAction(Context context, UMessage msg) {
	// super.dealWithCustomAction(context, msg);
	// Toast.makeText(MainApplication.context, "执行中国", 0).show();
	// }
	//
	// @Override
	// public void openActivity(Context arg0, UMessage msg) {
	// // TODO Auto-generated method stub
	// // super.openActivity(arg0, msg);
	// DebugLog.v("bytag", msg.activity);
	// if (msg.activity.equals("bbs_message")) {
	// try {
	// jsonObject = msg.getRaw().getJSONObject("extra");
	// // jsonObject = jsonObject.getJSONObject("after_open");
	// type = jsonObject.getInt("type");
	// } catch (JSONException e) {
	// // TODO Auto-generated catch block
	// e.printStackTrace();
	// }
	// // Intent intent = new Intent(MainApplication.context,
	// // .class);
	// // intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
	// // if (type == 0) {
	// // SPUtils.put(App.ctx, null, SPContants.IS_READ_ONE,
	// // false);
	// // intent.putExtra("current", 3);
	// // } else if (type == 1) {
	// // SPUtils.put(App.ctx, null, SPContants.IS_READ_TWO,
	// // false);
	// // intent.putExtra("current", 4);
	// // }
	// // startActivity(intent);
	// } else if (msg.activity.equals("order_message")) {
	// // try {
	// // jsonObject = msg.getRaw().getJSONObject("extra");
	// // jsonObject = jsonObject.getJSONObject("after_open");
	// // order_code = jsonObject.getString("order_code");
	// // } catch (JSONException e) {
	// // // TODO Auto-generated catch block
	// // e.printStackTrace();
	// // }
	// Intent intent = new Intent(getApplicationContext(),
	// MyOrderActivity.class);
	// intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
	// // String url =
	// //
	// "http://sunsun.itboye.com/index.php/Webview/Express/viewOrder?order_code="
	// // + order_code;
	// // System.out
	// // .println("model.getExtra().getafterOpen().getOrderCode()"
	// // + order_code);
	// startActivity(intent);
	//
	// } else if (msg.activity.equals("system_message")) {
	// // try {
	// // jsonObject = msg.getRaw().getJSONObject("extra");
	// // jsonObject = jsonObject.getJSONObject("after_open");
	// // id = jsonObject.getString("id");
	// // } catch (JSONException e) {
	// // // TODO Auto-generated catch block
	// // e.printStackTrace();
	// // }
	// Intent intent = new Intent(getApplicationContext(),
	// MegActivity.class);//消息
	// intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
	// startActivity(intent);
	// } else if (msg.activity.equals("call_message")) {// 私信消息
	// DebugLog.v("bytag", "d" + msg.getRaw() + "");
	// try {
	// jsonObject = msg.getRaw().getJSONObject("extra");
	// uid = jsonObject.getString("uid");
	// nickName=jsonObject.getString("nickname");
	// } catch (JSONException e) {
	// // TODO Auto-generated catch block
	// e.printStackTrace();
	// }
	//
	// Intent intent = new Intent(getApplicationContext(),
	// ActivitySiXinXiangQing.class);
	// intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
	// intent.putExtra("rela_uid",uid);
	// intent.putExtra("to_nick",nickName);
	// startActivity(intent);
	//
	// }
	// }
	// };
	//
	// // 使用自定义的NotificationHandler，来结合友盟统计处理消息通知
	// // 参考http://bbs.umeng.com/thread-11112-1-1.html
	// // CustomNotificationHandler notificationClickHandler = new
	// // CustomNotificationHandler();
	// mPushAgent.setNotificationClickHandler(notificationClickHandler);
	//
	// // if (MiPushRegistar.checkDevice(this)) {
	// // MiPushRegistar.register(this, "2882303761517400865",
	// // "5501740053865");
	// // }
	//
	// }

	public static Context getContext() {

		return context;
	}

	/**
	 * @return the queue
	 */
	public static RequestQueue getQueue() {
		return queue;
	}

	public static <T> void addRequest(Request<T> request) {
		request.addMarker("itboye");
		getQueue().add(request);
	}

}
